#ifndef Event_Manager_Marco_h
#define Event_Manager_Marco_h

#define DECLARE_EVENT_MAP() \
	public:\
		virtual void Handle(const serika::ut::Event& e);

#define DECLARE_EVENT_FUNCTION(name) \
	void name(const serika::ut::Event& e);

#define BEGIN_EVENT_MAP(className) \
	void className::Handle(const ut::Event& e)\
	{

#define  END_EVENT_MAP() \
	}

#define BEGIN_SWITCH_EVENT_TYPE_FILTER() \
		switch (e.GetType()) \
		{

#define END_SWITCH_EVENT_TYPE_FILTER() \
		 }

#define BEGIN_CASE_EVENT_TYPE_FILTER(eventType) \
	case eventType:

#define END_CASE_EVENT_TYPE_FILTER() \
	break;

#define BEGIN_EVENT_CODE_FILTER() \
	switch (e.GetCode()) \
	{

#define END_EVENT_CODE_FILTER() \
	}

#define EVENT_CODE_FILTER(code, func) \
	case code: \
		this->func(e); \
		break


#endif
